#!/bin/sh
#
# Script args:
# $0: full path to script
# $1: full path to top level package dir, no trailing slash
# $2: full path to installed location
# $3:  ????? Path to install Volume????
# $4:  ?????

update_extension_10_6()
{	
    if ls /dev/tty.* |grep -c HUAWEIMobile-Pcui;then
        echo "HUAWEIMoible-Pcui is ok"
    else
	    if kextstat|grep AppleUSBCDC;then
            kextunload /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBCDC.kext
            /System/Library/Extensions/HuaweiDataCardDriver.kext/Contents/PlugIns/HWActivateApp&
            kextload /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBCDC.kext
        else
            /System/Library/Extensions/HuaweiDataCardDriver.kext/Contents/PlugIns/HWActivateApp&
        fi

    fi
	
    
		
	if kextstat |grep -c HuaweiDataCard; then
		echo "HuaweiDataCardDriver has been loaded!"
	else
		sleep 20
		echo "Load HuaweiDataCardDriver.kext begin"
		kextload  /System/Library/Extensions/HuaweiDataCardDriver.kext/Contents/PlugIns/*.kext
		echo "Load HuaweiDataCardDriver.kext end"
	fi	
	

	PID=`ps -axc | grep kextd | perl -e '($a,$r,$z)=split /  */, <>; print $r;'`
    kill -HUP $PID
    touch /System/Library/Extensions


}

update_extension()
{
    kextload -t /System/Library/Extensions/HuaweiDataCardDriver.kext/Contents/PlugIns/*.kext
    PID=`ps -axc | grep kextd | perl -e '($a,$r,$z)=split /  */, <>; print $r;'`
    kill -HUP $PID
    kextload -t /System/Library/Extensions/HuaweiDataCardDriver.kext/

    if ls /dev/tty.* |grep -c HUAWEIMobile-Pcui;then
        echo "HUAWEIMoible-Pcui is ok"
    else
	    if kextstat|grep AppleUSBCDC;then
            kextunload /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBCDC.kext
            /System/Library/Extensions/HuaweiDataCardDriver.kext/Contents/PlugIns/HWActivateApp
            kextload /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBCDC.kext
        else
            /System/Library/Extensions/HuaweiDataCardDriver.kext/Contents/PlugIns/HWActivateApp
        fi

        if sw_vers -productVersion |grep -c 10.4; 
		then
            if kextstat|grep AppleUSBCDCDMM.kext;
			then
                kextunload /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBCDCDMM.kext
            fi
        fi
    fi

    if sw_vers -productVersion |grep -c 10.5; then
        touch /System/Library/Extensions
    fi
    if sw_vers -productVersion |grep -c 10.6; then
    touch /System/Library/Extensions
    fi
}

update_driver()
{
    echo "path is :"
    echo $1
	if [ -f "$1/Contents/Resources/HUAWEI Mobile Connect - 3G Modem" ]
	then
        cp -f "$1/Contents/Resources/HUAWEI Mobile Connect - 3G Modem" "/System/Library/Modem Scripts/HUAWEI Mobile Connect - 3G Modem"
	fi
    if sw_vers -productVersion |grep -c 10.5; 
	then
	    if [ -d "$1/Contents/Resources/HUAWEI Mobile.ccl" ]
		then
            cp -Rf "$1/Contents/Resources/HUAWEI Mobile.ccl" "/System/Library/Modem Scripts/"
		fi
    fi
    if [ -f "$1/Contents/Resources/HUAWEI Mobile Connect - 3G Modem" ]
	then
        cp -f "$1/Contents/Resources/HUAWEI Mobile Connect - 3G Modem" "/Library/Modem Scripts/HUAWEI Mobile Connect - 3G Modem"
    fi
    rm -Rf /System/Library/Extensions/HuaweiDataCardDriver.kext
    mv -f /System/Library/HuaweiDataCardDriver.kext /System/Library/Extensions/HuaweiDataCardDriver.kext

    rm -Rf /System/Library/Extensions/USBExpressCardCantWake_Huawei.kext
    mv -f /System/Library/USBExpressCardCantWake_Huawei.kext /System/Library/Extensions/USBExpressCardCantWake_Huawei.kext

    chown -R root:wheel /System/Library/Extensions/HuaweiDataCardDriver.kext
    chmod -R 755 /System/Library/Extensions/HuaweiDataCardDriver.kext

    chown -R root:wheel /System/Library/Extensions/USBExpressCardCantWake_Huawei.kext
    chmod -R 755 /System/Library/Extensions/USBExpressCardCantWake_Huawei.kext
    rm /System/Library/Extensions.kextcache
	
    rm -Rf /System/Library/Caches				   
    touch /System/Library/Extensions

    if sw_vers -productVersion |grep -c 10.6; then
        update_extension_10_6
    else
        update_extension
    fi
}



install_driver()
{
    VERSIONVOL=3
    OLD_FILE="/System/Library/Extensions/HuaweiDataCardDriver.kext"
	NEW_FILE="/System/Library/HuaweiDataCardDriver.kext/Contents/Info.plist"
	OLD_VERSIONLINE=$[ $(cat -n $OLD_FILE/Contents/Info.plist |grep "CFBundleShortVersionString" |cut -d \< -f1)+1 ]
	NEW_VERSIONLINE=$[ $(cat -n $NEW_FILE |grep "CFBundleShortVersionString" |cut -d \< -f1)+1 ]
    if [ "$(ls /System/Library/Extensions/ |grep HuaweiDataCardDriver)" != "" ]
    then
		NEED_UPDATE=0
        EXT_VERSION=$(cat -n $OLD_FILE/Contents/Info.plist |head -n 20 |grep $OLD_VERSIONLINE |cut -f $VERSIONVOL |cut -d \< -f2 |cut -d \> -f2)
        VERSION=$(cat -n $NEW_FILE |head -n 20 |grep $NEW_VERSIONLINE |cut -f $VERSIONVOL |cut -d \< -f2 |cut -d \> -f2)
		
		
		EXT_TEMP=`echo $EXT_VERSION |awk -F '.' '{print $4}'` 
        if [ "$(echo $EXT_TEMP)" != "" ]
		then
		    TEMP=`echo $VERSION |awk -F '.' '{print $4}'`
		    COMPARE=`echo "$TEMP-$EXT_TEMP" |bc`
		    if [ $COMPARE = "0" ] 
		    then
			    EXT_TEMP=`echo $EXT_VERSION |awk -F '.' '{print $1}'`
		        TEMP=`echo $VERSION |awk -F '.' '{print $1}'`
                COMPARE=`echo "$TEMP-$EXT_TEMP" |bc`
                if [ $COMPARE -lt "0" ]
		        then
		            echo "COMPARE < 0" #packet is old
			        NEED_UPDATE=0
		        else
			        if [ $COMPARE = "0" ]
		            then
				        EXT_TEMP=`echo $EXT_VERSION |awk -F '.' '{print $2}'`
		                TEMP=`echo $VERSION |awk -F '.' '{print $2}'`
                        COMPARE=`echo "$TEMP-$EXT_TEMP" |bc`
				        if [ $COMPARE -lt "0" ]
				        then
				            NEED_UPDATE=0 #packet is old
				        else
				            if [ $COMPARE = "0" ]
					        then
						        EXT_TEMP=`echo $EXT_VERSION |awk -F '.' '{print $3}'`
		                        TEMP=`echo $VERSION |awk -F '.' '{print $3}'`
                                COMPARE=`echo "$TEMP-$EXT_TEMP" |bc`
						        if [ $COMPARE -lt "0" ]
						        then
						            NEED_UPDATE=0 #packet is old
						        else
						            NEED_UPDATE=1
						        fi
					        else
					            NEED_UPDATE=1
					        fi
				        fi
		            else
			            NEED_UPDATE=1
			        fi
		        fi
		    else
		        NEED_UPDATE=1
		    fi
		else
			NEED_UPDATE=1
	    fi
        if [ $NEED_UPDATE = "0" ]
        then
            rm -Rf /System/Library/HuaweiDataCardDriver.kext
            rm -Rf /System/Library/USBExpressCardCantWake_Huawei.kext
        else
            update_driver "$1"
        fi
    else
        update_driver "$1"
    fi
}
install_driver "$1"
exit 0
